The market for media processing products (e.g., audio/video recorders/players) has grown exponentially during the past decade. High quality entertainment and robust security are key product requirements of present day consumers. These requirements necessitate enhanced audio, video, and image processing capabilities in media processing products. With the advancement in technology, the transmission bandwidths and storage capacities in consumer products have increased significantly. However, they are not keeping pace with the rapid rise in the demand for rich, high-quality media content.
To enable the present day networks and storage devices to efficiently handle the increased volume of media content, an upsurge has been witnessed in the efforts to develop better compression technologies for audio, video, and image data. Consequently, many efficient audio, video, and image compression standards have evolved. Notable among them are advanced audio coding (AAC) for audio; advanced video coding (H.264/AVC) and VC-1 for video; and JPEG2000 for images. Compared with their predecessors, the new generation compression engines have improved the coding efficiency of media content by introducing more efficient tools. Increased compression, however, comes at the cost of increased computational complexity. Because of the sheer amount of data involved, the issue of computational complexity becomes more significant in the case of video processing.
Interoperability among different multi-media product brands is another major concern. This task mandates efficient inter-conversion (transcoding) between different media formats. A common use-case in this domain is the conversion of the existing compressed media contents to formats that are compliant with a variety of portable media players. Transcoding media content is a highly computation-intensive job. Video analytics is another area that is being actively pursued in the security and surveillance products. This technology requires object level identification and detection of security hazards in public places, offices and homes, and needs high computational resources. High computational requirements of all types of media processing algorithms form a major bottleneck in the deployment of multi-media products.
General purpose computers are by and large not suitable for efficient media processing. To cope with the computationally intensive nature of media applications, media processing devices based on DSPs, media processors, and other hardware solutions that are specially tailored for audio, video, and image processing have emerged. On the other hand, the abundance of storage space and the ease of connectivity in general purpose computers make them ideally suited for archiving, streaming and sharing of media content. Hence, from a resource sharing perspective, the development of efficient and robust methods for interfacing a media processing apparatus with a general purpose computer is important.
The Universal Serial Bus (USB) has become a standard communication channel to connect external devices with computer systems. The USB standard(s) defines various classes for commonly used devices. These include “Mass storage”, “Human interface”, “Video”, “Audio”, “Printer”, etc. Operating systems (OS) on computers that support the USB interface provide pre-installed device drivers for using these common classes. Vendors whose USB-based products fall outside the category of common classes are required to provide OS Kernel-level device drivers to enable access to their products. This is a difficult proposition as it requires investment in time and resources to develop and test the complex Kernel-level device drivers. Moreover, this exercise has to be repeated for every operating system that a product is expected to interact with. Alternatively, a media apparatus may emulate a common class device and thereby use an OS-supplied device driver. This strategy may have huge benefits for media processing devices provided their high data rate and strict real-time data transfer constraints are satisfied.
Out of the above common device classes, the “Mass storage” class handles data to and from a computer system in the form of files. This class provides a secure way of transferring data across the USB via a file system, and is supported by all the popular computer operating systems. By emulating a “Mass storage” device a media processing apparatus may be able to use the OS-supplied “Mass storage” class device driver for data transfer. The need to develop an OS specific kernel-mode device driver for the media processing apparatus is thereby eliminated. However, transferring real-time media data through files may have its own pitfalls. Here, the involvement of a computer file system, caching and buffering of data may cause the stringent real-time constraints of media processing to be violated.
Hence, a system and a method are needed that utilize the pre-installed kernel-mode mass storage device driver, and also eliminate the overheads due to file systems. In this regard, one option is to bypass the file level abstraction provided by file systems, and instead employ an efficient and secure proprietary communication protocol to send and receive media data on the USB by directly reading/writing the emulated disk sectors.